﻿B4J=true
Group=Default Group\认证帮助类
ModulesStructureVersion=1
Type=Class
Version=10.3
@EndOfDesignText@
'' 模块帮助类
Sub Class_Globals
	
End Sub

'' 初始化类
Public Sub Initialize
	LogHelper.WirteLog("请求进入认证过滤模块")
End Sub

'' 返回true表示，允许请求继续走到 handle处理模块，否则直接返回给前端
Public Sub Filter(req As ServletRequest, resp As ServletResponse) As Boolean
	'' 放行某些url
	Dim baseUrl As String=req.RequestURI
	Dim IgUrls As List
	IgUrls.Initialize
	''------------- 在这里添加要放行的url
	IgUrls.Add("/system/login") '' 登录接口
	IgUrls.Add("/system/register") '' 注册接口
	IgUrls.Add("/system/forgotpassword") '' 忘记密码接口
	
	''--------------直接放行忽略的url
	If IgUrls.IndexOf(baseUrl)>=0 Then
		Return True
	End If
	'' ---------------取出token
	Dim token As String=req.GetHeader("token") '' 在前端的请求头中获取token
	If token="" Then
		'' resp.Status=401 '' 返回状态码
		'' resp.Write("拒绝访问，缺少token令牌")
		AjaxResult.Custom(resp,401,"拒绝访问，缺少token令牌!",Null)
		Return False
	End If
	'' ---------------检验token
	Dim isok As Boolean= JwtHelper.VerifyJWT(token)
	If isok=False Then
		'' resp.Status=401 '' 返回状态码
		'' resp.Write("拒绝访问，认证失败")
		AjaxResult.Custom(resp,401,"拒绝访问，认证失败！",Null)
		Return False
	End If
	'' ---------------全部认证通过后继续走到后面的其他处理模块
	Return True
End Sub